//package com.yz.design.responsibilityDegin;
//
//import com.google.common.base.Preconditions;
//import org.springframework.beans.BeanUtils;
//
//import java.util.Arrays;
//import java.util.List;
//import java.util.stream.Collectors;
//
//public final class HandlerFactory {
//    private static TypeConverterManager typeConverterManager = JoddBean.get().typeConverterManager();
//
//    public static <T, R> AbstractMessageHandler newJpushOrderHandler() {
//        return new JpushOrderHandler();
//    }
//
//
//    public static <T, R> AbstractMessageHandler newDelayRemoveOrderHandler() {
//        return new DelayRemoveOrderHandler();
//    }
//
//    /**
//     * 责任链模式
//     */
//    @SafeVarargs
//    public static <T, R> AbstractMessageHandler<T, R> getHandlerResponsibilityChain(Class<? extends AbstractMessageHandler<T, R>>... handlers) {
//
//        Preconditions.checkNotNull(handlers, "handler列表不能为空");
//        if (handlers.length == CommonConstants.TRUE) {
//            return BeanUtils.instantiate(handlers[CommonConstants.FIRST_ELEMENT]);
//        }
//        List<Object> list = Arrays.stream(handlers).map(BeanUtils::instantiate).collect(Collectors.toList());
//        AbstractMessageHandler<T, R> result = null;
//        for (int i = 1; i < list.size(); i++) {
//            AbstractMessageHandler<T, R> pre = typeConverterManager.convertType(list.get(i - 1), handlers[i - 1]);
//            AbstractMessageHandler<T, R> cur = typeConverterManager.convertType(list.get(i), handlers[i]);
//            cur.setNextHandler(pre);
//            result = cur;
//        }
//        return result;
//    }
//}